Tech

Diary

Lecture

About Me

개발중

트랜스포트 계층(Layer 4)

JeongSeulho

2024년 11월 25일

준비중...
클립보드로 복사

트랜스포트 계층

  • 원하는 어플리케이션으로 데이터를 전달하는 계층 => 포트 번호를 사용

TCP

  • 데이터의 신뢰성을 보장하는 프로토콜(통신 실패시 재전송, 왜곡확인 등)
  • 세그먼트라는 단위로 분리하여 전송
  • 데이터에 번호가 있으며 순서가 유지(순서가 바뀌어도 도착해도 순서대로 조립)

3 way handshake

  • 통신하기 전 연결을 확인하고 서로 통신에 필요한 파라미터를 정함(최대 세그먼트 크기 등)
    • 전송하는 데이터를 분할하여 전송하는데 이때 패킷 크기를 정함
    • 분할 이유 : 데이터 손실에서도 모든 데이터를 다시 보내지않고 일부만 보내도 됨

image

데이터 전송

  • ACKSEQ 번호를 사용하여 데이터를 잘 전송했는지 확인
  • 첫 통신에서 SEQ는 고유한 번호로 지정하여 데이터와 함께 전송
  • 받는 쪽에서 ACK = 받은 데이터의 SEQ + 데이터 크기 + 1 로 전송
  • 받는 쪽에서 SEQ = 받은 데이터의 ACK로 전송
  • 데이터를 보냈는데 보낸 데이터에 해당하는 응답이 오지 않으면 재전송 => 이것을 확인하기 위해 ACK 번호를 사용

4 way handshake

  • FIN에 대한 ACK를 보낸 후 서버에 덜 보낸 데이터가 있는 경우 마저 보내고 다시 FIN 보냄

image

TCP 헤더

image

  • 윈도우 사이즈 : 한번에 얼마나 많은 세그먼트를 전송할지 결정
    • 세그먼트를 분리하여 전송하는데, 각 세그먼트의 응답이 와야 다음 데이터를 기다림 => 느린 전송을 해결하기 위해 한번에 여러 세그먼트를 보냄
    • 첫 통신에서 작게 설정했다가 점차 늘려가며 통신
    image

UDP

  • 3 way handshake와 같은 커넥션 없이 바로 데이터 전송
  • 속도가 중요한 경우 사용(영상, 음성, 게임 등)
  • UDP를 사용하여 데이터 재전송 등은 직접 구현 해야함